#include <vector>
#include <iostream>

using namespace std;

class Nodo{
public:
	int p, distancia, i, j, numero;
	bool noVisitado;
	Nodo* padre;
	
	vector <pair<Nodo*, int> > adyacentes;


  Nodo(int n, int i, int j, int numero);
  void agregarAdyacente(vector<vector<Nodo*> > &matrix, int i, int j);
  void agregarCheat(vector<vector<Nodo*> > &matrix, int i, int j, int g);

};

vector<vector<Nodo*> > crearGrafo(vector<Nodo> &alfa, int n, int g);
void bfs(vector<vector<Nodo*> > matrix, Nodo* origen, int g);
void imprimirSolucion(vector<vector<Nodo*> > &matrix, Nodo* destino);

bool tablero(int i, int j, int n);
